package com.ztom.daily.n2022.m4;

/**
 * 到达终点
 * <p>
 * https://leetcode-cn.com/problems/reaching-points/
 *
 * @author ZhangTao
 */
public class Day09ReachingPoints {

    public boolean reachingPoints(int sx, int sy, int tx, int ty) {
        // 如果 tx = ty , 不存在上一个状态, (tx, ty) 是起点
        // 如果 tx > ty , 则上一个状态是 (tx - ty, ty)
        // 如果 ty > tx , 则上一个状态是 (tx, ty - tx)
        while (tx > sx && ty > sy && tx != ty) {
            if (tx > ty) {
                tx %= ty;
            } else {
                ty %= tx;
            }
        }
        if (tx == sx && ty == sy) {
            return true;
        } else if (tx == sx) {
            return ty > sy && (ty - sy) % tx == 0;
        } else if (ty == sy) {
            return tx > sx && (tx - sx) % ty == 0;
        } else {
            return false;
        }
    }
}
